﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Librerias;
using System.Data;

namespace eCampusWeb
{
    public partial class MuroComentario : System.Web.UI.Page
    {
        string id;

        protected void Page_Load(object sender, EventArgs e)
        {
            id=Request.QueryString["id"];

            if (id == null || id == "" || Session["correo"] == null || Session["correo"].ToString() == "")
            {
                Response.Redirect("~/401.aspx");
            }

            if (!IsPostBack)
            {
                //Carga entrada de muro
                DataTable muro = new Librerias.EN.ENMuro().GetEntrada(id);

                if (muro.Rows.Count > 0)
                {
                    HyperLink1.Text = muro.Rows[0]["usuNombre"].ToString() + " " + muro.Rows[0]["usuApellido1"].ToString() + " " + muro.Rows[0]["usuApellido2"].ToString();
                    Label2.Text = muro.Rows[0]["murMensaje"].ToString();
                    Label4.Text = muro.Rows[0]["murFecha"].ToString();
                    Label3.Text = muro.Rows[0]["puntosTot"].ToString() == "" ? "0" : muro.Rows[0]["puntosTot"].ToString();

                    if (Session["correo"].ToString() == muro.Rows[0]["murEmisor"].ToString() ||
                        Session["correo"].ToString() == muro.Rows[0]["murReceptor"].ToString())
                    {
                        imgBorrar.CommandArgument = muro.Rows[0]["murId"].ToString();
                    }
                    else
                    {
                        cuadroBorrar.Visible = false;
                    }

                }

                //Carga comentarios
                DataTable coments = new Librerias.EN.ENComentario().GetComentarios("M" + id);
                ListView1.DataSource = coments;
                ListView1.DataBind();

                Label5.Text = coments.Rows.Count.ToString() + " comentarios";

                string asig = Request.QueryString["asig"];

                DataTable tabla;
                if (asig == null)
                {
                    //Carga datos de usuario
                    tabla = new ENUsuario().dimeUsuarioSegunCorreo(muro.Rows[0]["murReceptor"].ToString());

                    if (tabla.Rows.Count > 0)
                    {
                        lbTitulo.Text = "Muro de " + tabla.Rows[0]["usuNombre"].ToString() + " " + tabla.Rows[0]["usuApellido1"].ToString() + " " + tabla.Rows[0]["usuApellido2"].ToString();
                        lbSubtitulo.Text = (tabla.Rows[0]["usuTipo"].ToString() == "1" ? "Profesor" : "Alumno");
                        HiddenField1.Value = tabla.Rows[0]["usuCorreo"].ToString();
                    }

                }
                else
                {
                    //Carga datos de usuario
                    tabla = new ENAsignatura().ConsultaAsignaturas(Request.QueryString["asig"], 0);

                    if (tabla.Rows.Count > 0)
                    {
                        lbTitulo.Text = "Muro de " + tabla.Rows[0]["asiNombre"].ToString();
                        lbSubtitulo.Text = "Asignatura";
                    }
                }
            }
            else
            {

                if (Request.Form["__EVENTTARGET"] != null &&
                    Request.Form["__EVENTTARGET"] == "BORRAR")
                {
                    Borrar(Request.Form["__EVENTARGUMENT"]);
                }

                lbError.Text = "";
            }
        }

        public void Comentar(object sender, EventArgs e)
        {
            try
            {

                new Librerias.EN.ENComentario().AddComentario(Session["correo"].ToString(), "M" + id, TextBox1.Text);

                DataTable coments = new Librerias.EN.ENComentario().GetComentarios("M" + id);
                ListView1.DataSource = coments;
                ListView1.DataBind();

                Label5.Text = coments.Rows.Count.ToString() + " comentarios";
            
                TextBox1.Text = "";
            }
            catch
            {
                lbError.Text = "No se pudo crear el mensaje";
            }
        }

        public void MasUnoMuro(object sender, EventArgs e)
        {
            try
            {
                new Librerias.EN.ENPuntos().MasUno("M" + id, Session["correo"].ToString());

                //Carga entrada de muro
                DataTable muro = new Librerias.EN.ENMuro().GetEntrada(id);

                if (muro.Rows.Count > 0)
                {
                    HyperLink1.Text = muro.Rows[0]["usuNombre"].ToString() + " " + muro.Rows[0]["usuApellido1"].ToString() + " " + muro.Rows[0]["usuApellido2"].ToString();
                    Label2.Text = muro.Rows[0]["murMensaje"].ToString();
                    Label4.Text = muro.Rows[0]["murFecha"].ToString();
                    Label3.Text = muro.Rows[0]["puntosTot"].ToString() == "" ? "0" : muro.Rows[0]["puntosTot"].ToString();
                }
            }
            catch (Exception)
            {
                lbError.Text = "ERROR: No puedes votar dos veces el mismo comentario. ";
            }
        }

        public void MenosUnoMuro(object sender, EventArgs e)
        {
            try
            {
                new Librerias.EN.ENPuntos().MenosUno("M" + id, Session["correo"].ToString());

                //Carga entrada de muro
                DataTable muro = new Librerias.EN.ENMuro().GetEntrada(id);

                if (muro.Rows.Count > 0)
                {
                    HyperLink1.Text = muro.Rows[0]["usuNombre"].ToString() + " " + muro.Rows[0]["usuApellido1"].ToString() + " " + muro.Rows[0]["usuApellido2"].ToString();
                    Label2.Text = muro.Rows[0]["murMensaje"].ToString();
                    Label4.Text = muro.Rows[0]["murFecha"].ToString();
                    Label3.Text = muro.Rows[0]["puntosTot"].ToString() == "" ? "0" : muro.Rows[0]["puntosTot"].ToString();
                }
            }
            catch (Exception)
            {
                lbError.Text = "ERROR: No puedes votar dos veces el mismo comentario. ";
            }
        }

        public void MasUno(object sender, EventArgs e)
        {
            try
            {
                string Cid = ((ImageButton)sender).CommandArgument;

                new Librerias.EN.ENPuntos().MasUno("C" + Cid, Session["correo"].ToString());

                //Carga comentarios
                DataTable coments = new Librerias.EN.ENComentario().GetComentarios("M" + id);
                ListView1.DataSource = coments;
                ListView1.DataBind();

                Label5.Text = coments.Rows.Count.ToString() + " comentarios";
            }
            catch (Exception)
            {
                lbError.Text = "ERROR: No puedes votar dos veces el mismo comentario. ";
            }
        }

        public void MenosUno(object sender, EventArgs e)
        {
            try
            {
                string Cid = ((ImageButton)sender).CommandArgument;

                new Librerias.EN.ENPuntos().MenosUno("C" + Cid, Session["correo"].ToString());

                //Carga comentarios
                DataTable coments = new Librerias.EN.ENComentario().GetComentarios("M" + id);
                ListView1.DataSource = coments;
                ListView1.DataBind();

                Label5.Text = coments.Rows.Count.ToString() + " comentarios";
            }
            catch (Exception)
            {
                lbError.Text = "ERROR: No puedes votar dos veces el mismo comentario. ";
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            if (Request.QueryString["asig"] == null)
            {
                Response.Redirect("~/Muro.aspx?usuario=" + HttpUtility.HtmlEncode(HiddenField1.Value));
            }
            else
            {
                Response.Redirect("~/AsignaturaMuro.aspx?codigo=" + Request.QueryString["asig"]);
            }
        }

        public void Borrar(string idB)
        {
            new Librerias.EN.ENComentario().DeleteComentario(idB);

            string redir = "~/MuroComentario.aspx?id=" + id;

            string asig = Request.QueryString["asig"];

            if (asig != null)
            {
                redir += "&asig=" + asig;
            }

            Response.Redirect(redir);
        }

        protected void imgBorrar_Click(object sender, ImageClickEventArgs e)
        {

            new Librerias.EN.ENMuro().DeleteEntrada(((ImageButton)sender).CommandArgument, Session["correo"].ToString());

            Button2_Click(null, null);
        }

    }
}